package JDBC;

import java.sql.*;

public class Test {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        try {
            // 1. 注册驱动
            Driver driver = new com.mysql.jdbc.Driver();
            DriverManager.registerDriver(driver);
            // 2. 获取连接(URL, 用户名, 密码)
            // URL: 统一资源定位符(网络中某个资源的绝对路径)
            // URL包括那几部分?
            // 以百度为例 http://182.61.200.7:80/index.html
            // 协议 http://
            // ip 182.61.200.7 服务器IP地址 ip是计算机的代号
            // 端口号 80 服务器上软件的端口 端口是计算机上某一个软件的代号
            // 资源名 index.html
            String url = "jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=true";
            // jdbc:mysql://localhost:3306/test
            // jdbc:mysql:// 协议
            // localhost 本机ip
            // 3306 端口号
            // test 具体的数据库实例名, 是资源
            // 可以更改 ip, 端口号, 数据库名来连接别人的数据库
            String user = "root";
            String password = "991025";
            conn = DriverManager.getConnection(url, user, password);
            System.out.println("数据库连接对象" + conn);
            // 3. 获取数据库操作对象(Statement专门执行SQL语句)
            stmt = conn.createStatement();
            // 4. 执行 sql
            // 创建 SQL 语句
            String sql = "insert into user values (6, 'huahua', '111111');";
            // executeUpdate(String) 专门执行insert, delete, update 语句
            // 返回值是影响数据库中的记录条数
            int count = stmt.executeUpdate(sql);
            System.out.println("影响了" + count + "条数据");
            // 5. 操作查询结果集
            // 由于是插入操作,所以没有结果集处理
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            // 6. 释放资源
            // 为了保证资源一定被释放, 这步操作在 finally 中执行
            // 先建立的后断开, 分别进行 try catch
            try {
                if (stmt != null) {
                    stmt.close();
                }
            }catch (SQLException throwables) {
                throwables.printStackTrace();
            }
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
}
